﻿#pragma once
#include <array>
#include <memory>
#include <GLFW/glfw3.h>

#include "Light/Light.h"


class FScence;
class FMesh;
class FMeshModel;
class FVertex;
class FMaterial;
class FCamera;


class FRender
{
public:
	virtual ~FRender() = default;

	virtual void BeginDraw();

	virtual void Draw(float DateTime);

	virtual void EndDraw();

public:

	std::shared_ptr<FCamera> GetCamera() const;  // NOLINT(modernize-use-nodiscard)

	void Init(GLFWwindow* InWindow);

	void Destory();

	float GetAspect() const { return Aspect; }

public:

	void OnFramebufferSizeChange(int32_t InWidth, int32_t InHeight);

protected:

	std::shared_ptr<FScence> Scene;

	int32_t Width = 800;
	int32_t Height = 600;

	float Aspect = 0.f;

	GLFWwindow* Window = nullptr;
};

